import { http } from '@/utils';

// 文章相关-获取频道列表
export const getChannels = () => {
  return async (dispatch) => {
    // console.log('getChannels action');
    const res = await http.get('/channels');
    console.log(res);
    // 保存数据到 reducer
    dispatch({
      type: 'article/getChannels',
      payload: res.data.data.channels,
    });
  };
};

// 文章相关-获取文章列表
export const getArticles = (params) => {
  return async (dispatch) => {
    console.log('发起文章列表请求', params);
    // 组装准备查询接口的数据，目前选择驼峰命名，在action中进行和数据库字段的对接
    let queryParams = {};
    // 文章状态-不传为全部
    if (params.status !== -1) {
      // 等于-1，给后台的查询字段不会有status
      queryParams.status = params.status;
    }
    // 处理频道-不传为全部
    if (params.channelId !== -1) {
      queryParams.channel_id = params.channelId;
    }
    // 日期范围-起始时间
    if (params.dateStart) {
      queryParams.begin_pubdate = params.dateStart;
    }
    // 日期范围-截止时间
    if (params.dateEnd) {
      queryParams.end_pubdate = params.dateEnd;
    }
    // 分页
    queryParams.page = params.page;
    queryParams.per_page = params.pageSize;

    console.log('文章列表查询参数', queryParams);

    const res = await http.get('/mp/articles', { params: queryParams });
    console.log('文章列表-res', res);

    // 准备把数据交给reducer
    dispatch({
      type: 'article/getArticles',
      payload: {
        list: res.data.data.results.map((item) => ({
          ...item,
          cover: item.cover.images[0], // 数组转化要放到action
        })),
        total: res.data.data.total_count,
      },
    });
  };
};

// 文章相关-删除文章-通过id
export const deleteArticle = (id) => {
  return async (dispatch) => {
    // 发起删除文章的请求
    const res = await http.delete(`/mp/articles/${id}`);
    console.log('删除res', res);
  };
};

// 发表文章
export const publishArticle = (data) => {
  return async (dispatch) => {
    console.log('=====>', data);
    // 准备表单数据
    const postData = {
      title: data.values.title,
      content: data.values.content,
      channel_id: data.values.channelId,
      cover: {
        type: data.values.type,
        // 检查一下这里图片数组
        images: data.articleId
          ? data.fileList
          : data.fileList.map((item) => item.response.data.url),
      },
    };
    // 发布文章状态
    const isDraft = data.publishType === 'draft' ? true : false;

    // 判断是编辑文章，还是新建文章
    if (data.articleId) {
      // 编辑
      const res = await http.put(
        `/mp/articles/${data.articleId}/?draft=${isDraft}`,
        postData
      );
      console.log('编辑文章结果', res);
    } else {
      // 新建
      const res = await http.post(`/mp/articles?draft=${isDraft}`, postData);
      console.log('新建文章结果', res);
    }
  };
};
